<?php

/*
 * CentroDAL
 * @Autor: Andrés Ubilla.
 */

class CentroDAL {

    public static function grabar($oCentro) {
        try {
            $arr = array(
                "{#NOMBRE}" => $oCentro->getNombre(),
                "{#DIRECCION}" => $oCentro->getDireccion(),
                "{#TELEFONO}" => $oCentro->getTelefono(),
                "{#HORA_INICIOAM}" => $oCentro->getHoraInicioAM(),
                "{#HORA_FINAM}" => $oCentro->getHoraFinAM(),
                "{#HORA_INICIOPM}" => $oCentro->getHoraInicioPM(),
                "{#HORA_FINPM}" => $oCentro->getHoraFinPM(),
                "{#LATITUD}" => $oCentro->getLatitud(),
                "{#LONGITUD}" => $oCentro->getLongitud(),
                "{#ESTADO}" => $oCentro->getEstado()
            );
            $query = Util::getQuery($arr, CentroSQL::$REGISTRAR_CENTRO);
            $arrDatos = Bd::exec($query);
            
            $id = Bd::$IDENTITY;
            return $id;
            
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    public static function editar($oCentro) {
        try {
            $arr = array(
                "{#ID}" => $oCentro->getId(),
                "{#NOMBRE}" => $oCentro->getNombre(),
                "{#DIRECCION}" => $oCentro->getDireccion(),
                "{#TELEFONO}" => $oCentro->getTelefono(),
                "{#HORA_INICIOAM}" => $oCentro->getHoraInicioAM(),
                "{#HORA_FINAM}" => $oCentro->getHoraFinAM(),
                "{#HORA_INICIOPM}" => $oCentro->getHoraInicioPM(),
                "{#HORA_FINPM}" => $oCentro->getHoraFinPM(),
                "{#LATITUD}" => $oCentro->getLatitud(),
                "{#LONGITUD}" => $oCentro->getLongitud(),
                "{#ESTADO}" => $oCentro->getEstado()
            );
            $query = Util::getQuery($arr, CentroSQL::$EDITAR_CENTRO);
            $arrDatos = Bd::exec($query);
            
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

    public static function listar($oCentro) {
        try {
            $arr = array(
                "{#ID}" => $oCentro->getId(),
                "{#NOMBRE}" => $oCentro->getNombre(),
                "{#DIRECCION}" => $oCentro->getDireccion(),
                "{#TELEFONO}" => $oCentro->getTelefono(),
                "{#HORA_INICIOAM}" => $oCentro->getHoraInicioAM(),
                "{#HORA_FINAM}" => $oCentro->getHoraFinAM(),
                "{#HORA_INICIOPM}" => $oCentro->getHoraInicioPM(),
                "{#HORA_FINPM}" => $oCentro->getHoraFinPM(),
                "{#LATITUD}" => $oCentro->getLatitud(),
                "{#LONGITUD}" => $oCentro->getLongitud(),
                "{#ESTADO}" => $oCentro->getEstado()
            );
            $query = Util::getQuery($arr, CentroSQL::$LISTAR);

            $arrDatos = Bd::exec($query);
            $arrCentros = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oCentro = new Centro();

                    $oCentro->setId(is_null($row["id"]) ? 0 : $row["id"]);
                    $oCentro->setNombre(is_null($row["nombre"]) ? "" : $row["nombre"]);
                    $oCentro->setDireccion(is_null($row["direccion"]) ? "" : $row["direccion"]);
                    $oCentro->setTelefono(is_null($row["telefono"]) ? 0 : $row["telefono"]);
                    $oCentro->setHoraInicioAM(is_null($row["hora_inicioam"]) ? "" : $row["hora_inicioam"]);
                    $oCentro->setHoraFinAM(is_null($row["hora_finam"]) ? "" : $row["hora_finam"]);
                    $oCentro->setHoraInicioPM(is_null($row["hora_iniciopm"]) ? "" : $row["hora_iniciopm"]);
                    $oCentro->setHoraFinPM(is_null($row["hora_finpm"]) ? "" : $row["hora_finpm"]);
                    $oCentro->setLatitud(is_null($row["latitud"]) ? "" : $row["latitud"]);
                    $oCentro->setLongitud(is_null($row["longitud"]) ? "" : $row["longitud"]);
                    $arrCentros[] = $oCentro;
                }
            }

            return $arrCentros;
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, CentroSQL::$OBTENER_POR_ID);
            $arrDatos = Bd::exec($query);            
            
            if (count($arrDatos) > 0) {
                $oCentro = new Centro();
                
                foreach ($arrDatos as $row) {
                    $oCentro->setId(is_null($row["id"]) ? 0 : $row["id"]);
                    $oCentro->setNombre(is_null($row["nombre"]) ? "" : $row["nombre"]);
                    $oCentro->setDireccion(is_null($row["direccion"]) ? "" : $row["direccion"]);
                    $oCentro->setTelefono(is_null($row["telefono"]) ? 0 : $row["telefono"]);
                    $oCentro->setHoraInicioAM(is_null($row["hora_inicioam"]) ? "" : $row["hora_inicioam"]);
                    $oCentro->setHoraFinAM(is_null($row["hora_finam"]) ? "" : $row["hora_finam"]);
                    $oCentro->setHoraInicioPM(is_null($row["hora_iniciopm"]) ? "" : $row["hora_iniciopm"]);
                    $oCentro->setHoraFinPM(is_null($row["hora_finpm"]) ? "" : $row["hora_finpm"]);
                    $oCentro->setLatitud(is_null($row["latitud"]) ? "" : $row["latitud"]);
                    $oCentro->setLongitud(is_null($row["longitud"]) ? "" : $row["longitud"]);
                }
            }

            return $oCentro;
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

    public static function listarCombo($oCentro) {
        try {
            $arr = array("{#ID}" => $oCentro->getId());
            $query = Util::getQuery($arr, CentroSQL::$LISTAR_COMBO);

            $arrDatos = Bd::exec($query);
            $arrCentros = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oCentro = new Centro();
                    $oCentro->setId(is_null($row["id"]) ? 0 : $row["id"]);
                    $oCentro->setNombre(is_null($row["nombre"]) ? "" : $row["nombre"]);
                    $arrCentros[] = $oCentro;
                }
            }

            return $arrCentros;
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, CentroSQL::$ELIMINAR);
            $arrDatos = Bd::exec($query);
            
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>
